#include<string.h>
#include<stdio.h>
#include "Teacher.h"

void InitTeacher(Teach *t, int id, const char *name)
{
    t->id= id;
    strcpy(t->Name, name);
    t->size= 0;
}

void PrintTeach(Teach *t)
{
    printf("老师列表：\n");
    printf("%d %s\n",t->id, t->Name);
    printf("学生列表：\n");
    for(int i=0; i< t->size; i++)
    {
        PrintStu(t->s+i);
    }
}

void addStudent(Teach *t, int StuId, const char *StuName)
{
    if(t->size >=10)
    {
        printf("已经达到上限!\n");
    }

    t->s[t->size].id= StuId;
    strcpy(t->s[t->size].Name, StuName);
    t->size++;
}

void RemoveByIndex(Teach *t, int index)
{
    if(index<0||index>=t->size)
    {
        printf("非法位置的删除\n");
        return;
    }

    for(int i= index; i< t->size; i++)
    {
        t->s[i]=t->s[i+1];
    }
}

void RemoveStudent(Teach *t, void* data, bool(*IsEqual)(void *, void *))
{   for(int i=0; i< t->size;i++)
    {
        if(IsEqual(&t->s[i],data))   //回调函数：函数以参数形式传递给另一个函数：提高代码的可扩展性
        {
            RemoveByIndex(t,i);
            t->size--;
            i--;
        }
    }
}

Stu* FindStudent(Teach *t, void *data, bool (*IsEqual)(void *, void *))
{
    for(int i=0; i< t->size;i++)
    {
        if(IsEqual(&t->s[i],data))   //回调函数：函数以参数形式传递给另一个函数：提高代码的可扩展性
        {
            return &t->s[i];
        }
    }
    return NULL;
}